home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / gnome_sudoku / pausable.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  4.1 KB  |  90 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import time
  5.  
  6. class MethodWrapper:
  7.     
  8.     def __call__(self, cls):
  9.         for attr in dir(cls):
  10.             attrobj = getattr(cls, attr)
  11.             if callable(attrobj) and attr.find('__') != 0:
  12.                 setattr(cls, attr, self.wrap(attrobj))
  13.                 continue
  14.         
  15.  
  16.     
  17.     def wrap(self, f):
  18.         
  19.         def _(*args, **kwargs):
  20.             self.wrapper(*args, **kwargs)
  21.             return f(*args, **kwargs)
  22.  
  23.         return _
  24.  
  25.     
  26.     def wrapper(self, *args, **kwargs):
  27.         print args, kwargs
  28.  
  29.  
  30.  
  31. class PausableWrapper(MethodWrapper):
  32.     
  33.     def __init__(self, sleep_for = 1):
  34.         self.sleep_for = sleep_for
  35.  
  36.     
  37.     def __call__(self, cls):
  38.         MethodWrapper.__call__(self, cls)
  39.         cls.paused = False
  40.         cls.terminated = False
  41.         
  42.         cls.pause = lambda *args: self.pause(cls)
  43.         
  44.         cls.resume = lambda *args: self.resume(cls)
  45.         
  46.         cls.terminate = lambda *args: self.terminate(cls)
  47.         
  48.         cls.stop = lambda *args: self.terminate(cls)
  49.         self.init_wrap(cls.__init__)
  50.  
  51.     
  52.     def init_wrap(self, f):
  53.         
  54.         def _(cls, *args, **kwargs):
  55.             cls.paused = False
  56.             cls.terminated = False
  57.             return f(cls, *args, **kwargs)
  58.  
  59.         return _
  60.  
  61.     
  62.     def pause(self, cls):
  63.         cls.paused = True
  64.  
  65.     
  66.     def resume(self, cls):
  67.         cls.paused = False
  68.  
  69.     
  70.     def terminate(self, cls):
  71.         cls.terminated = True
  72.  
  73.     
  74.     def unterminate(self, cls):
  75.         cls.terminated = False
  76.  
  77.     
  78.     def wrapper(self, cls, *args, **kwargs):
  79.         if cls.terminated:
  80.             raise 'Terminated!'
  81.         cls.terminated
  82.         while cls.paused:
  83.             if cls.terminated:
  84.                 raise 'Terminated!'
  85.             cls.terminated
  86.             time.sleep(self.sleep_for)
  87.  
  88.  
  89. make_pausable = PausableWrapper()
  90.